﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using TechControl.BD;
using System.Data.SqlClient;


namespace TechControl.Presentation
{
    public partial class frm_listarFuncionario : frm_default
    {
        BindingSource bs = new BindingSource();

        public frm_listarFuncionario()
        {
            InitializeComponent();
        }

        //chama o método que popula o dataGrid com os dados dos funcionários cadastrados.
        private void frm_listarFuncionario_Load(object sender, EventArgs e)
        {
            rbd_todos.Checked = true;
            loadDadosOnGrid();
        }

        //volta para o form anterior.
        private void bt_voltar_Click(object sender, EventArgs e)
        {
            this.closeForm();
        }

        //separa os usuários de acordo com o filtro.
        private void bt_listar_Click(object sender, EventArgs e)
        {
            if (rdb_ativos.Checked == true)
            {
                bs.Filter = "status like '%ativo%'";
            }
            else if (rdb_desligados.Checked == true)
            {
                bs.Filter = "status like '%desligado%'";
            }
            else
            {
                bs.RemoveFilter();
            }
        }

        //método responsável por popular o dataGrid.
        public void loadDadosOnGrid()
        { 
            BaseDB ba = new BaseDB();
            try
            {
                ba.open();

                SqlCommand command = new SqlCommand("Select * from tb_funcionario", ba.conn);
                //cria um adapter para preencher um data set.
                SqlDataAdapter da = new SqlDataAdapter(command);
                //define um objeto dataSet
                DataSet ds = new DataSet();
                da.Fill(ds);

                //atribui o dataset ao DataSource do BindingSource
                bs.DataSource = ds;

                //atribui o BindingSource ao BindingNavigator
                bs.DataMember = ds.Tables[0].TableName;

                //Atribui o BindingSource ao DataGridView
                dg_listaFuncionário.DataSource = bs;
            }
            catch (Exception)
            {
                MessageBox.Show("Não foi possivél carregar os dados!", "Erro");
            }
            finally
            {
                ba.close();
            }
        }

        //chama o método que excluí funcionário selecionado (altera o registro na tabela para Status = desligado).
        private void bt_excluir_Click(object sender, EventArgs e)
        {
            if (dg_listaFuncionário.SelectedRows == null)
            {
                MessageBox.Show("Selecione uma linha para efetuar uma ação!", "Aviso");
                dg_listaFuncionário.Focus();
            }
            else
            {
                var resultado = MessageBox.Show("Deseja realmente excluir o Funcionário?","Excluir Funcionário", MessageBoxButtons.YesNo,
                    MessageBoxIcon.Question, MessageBoxDefaultButton.Button1);
                if (resultado == DialogResult.Yes)
                {
                    Int64 cod = Int64.Parse(dg_listaFuncionário.CurrentRow.Cells[0].Value.ToString());
                    FuncionarioDB.getInstance().updateDeslFunc(cod);
                    MessageBox.Show("Item excluido com sucesso!", "Excluir Funcionário");
                    loadDadosOnGrid();
                }
                else
                {
                    dg_listaFuncionário.Focus();
                }
            }
        }

        //chama formulário de cadastro de funcionário.
        private void bt_incluir_Click(object sender, EventArgs e)
        {
            frm_cadFuncionario cadFuncioanrio = new frm_cadFuncionario(this);
            cadFuncioanrio.showForm(this);
        }

        //chama o formulário de alteração de resgistro.
        private void bt_alterar_Click(object sender, EventArgs e)
        {
            Int64 cod = Int64.Parse(dg_listaFuncionário.CurrentRow.Cells[0].Value.ToString());
            frm_altFuncionario altFuncionario = new frm_altFuncionario(this, cod);
            altFuncionario.showForm(this);
        }

    }
}
